def get_valid_input(prompt: str, input_type: type) -> float | int:
    """
    通用输入校验函数（复用逻辑，减少重复代码）
    :param prompt: 输入提示语
    :param input_type: 输入类型（int/float）
    :return: 校验通过的输入值
    """
    while True:
        user_input = input(prompt).strip()
        try:
            value = input_type(user_input)
            if value < 0:
                print(f"❌ 输入不能为负数，请重新输入！")
                continue
            return value
        except ValueError:
            input_name = "整数" if input_type == int else "数字（支持小数）"
            print(f"❌ 输入格式错误！请输入有效的{input_name}（例如：{100 if input_type == int else 199.9}）")

def get_member_level() -> None:
    """会员等级评定主函数（含输入、校验、分支判断、结果输出）"""
    # 1. 欢迎语与规则说明（提升透明度，让用户知其然）
    print("=" * 60)
    print("🎯 智慧会员等级评定系统")
    print("=" * 60)
    print("📋 等级评定规则（需同时满足消费金额和积分条件）：")
    print("   • 钻石会员：消费≥1000元 且 积分≥10000分")
    print("   • 白金会员：500元≤消费<1000元 且 5000分≤积分<10000分")
    print("   • 黄金会员：200元≤消费<500元 且 2000分≤积分<5000分")
    print("   • 白银会员：100元≤消费<200元 且 1000分≤积分<2000分")
    print("   • 青铜会员：积分≥500分 且 <1000分（无消费金额下限）")
    print("   • 普通会员：积分<500分（无消费金额下限）")
    print("=" * 60)

    # 2. 手动输入（调用通用校验函数，确保输入有效）
    consume_amount = get_valid_input("\n💴 请输入你的累计消费金额（元）：", float)
    points = get_valid_input("💎 请输入你的当前积分（分）：", int)

    # 3. 核心分支语句（从高到低评定等级，逻辑清晰）
    if consume_amount >= 1000 and points >= 10000:
        level = "钻石会员"
        upgrade_tip = "🏆 你已达到最高等级，享受专属VIP服务！"
    elif 500 <= consume_amount < 1000 and 5000 <= points < 10000:
        level = "白金会员"
        upgrade_gap = f"消费再满{1000 - consume_amount:.2f}元 或 积分再积{10000 - points}分"
        upgrade_tip = f"📈 距离钻石会员仅差：{upgrade_gap}！"
    elif 200 <= consume_amount < 500 and 2000 <= points < 5000:
        level = "黄金会员"
        upgrade_gap = f"消费再满{500 - consume_amount:.2f}元 或 积分再积{5000 - points}分"
        upgrade_tip = f"📈 距离白金会员仅差：{upgrade_gap}！"
    elif 100 <= consume_amount < 200 and 1000 <= points < 2000:
        level = "白银会员"
        upgrade_gap = f"消费再满{200 - consume_amount:.2f}元 或 积分再积{2000 - points}分"
        upgrade_tip = f"📈 距离黄金会员仅差：{upgrade_gap}！"
    elif 500 <= points < 1000:
        level = "青铜会员"
        upgrade_gap = f"积分再积{1000 - points}分（若消费满100元可同步冲击白银会员）"
        upgrade_tip = f"📈 距离白银会员仅差：{upgrade_gap}！"
    elif points < 500:
        level = "普通会员"
        upgrade_gap = f"积分再积{500 - points}分"
        upgrade_tip = f"📈 距离青铜会员仅差：{upgrade_gap}！"
    else:
        level = "等级评定异常"
        upgrade_tip = "⚠️  请检查输入是否符合规则，或联系客服咨询"

    # 4. 美化输出结果（清晰直观，带升级指引）
    print("\n" + "-" * 60)
    print("📊 你的评定结果如下：")
    print(f"   累计消费：{consume_amount:.2f} 元")
    print(f"   当前积分：{points} 分")
    print(f"   会员等级：🥇 {level}")
    print(f"   升级指引：{upgrade_tip}")
    print("-" * 60)
def main():
    """程序主入口（支持多次评定，提升实用性）"""
    while True:
        get_member_level()
        
        # 询问是否继续评定
        while True:
            retry = input("\n是否继续为其他账号评定等级？（y=是/n=否）：").strip().lower()
            if retry in ["y", "n"]:
                break
            print("❌ 输入无效！请输入 'y'（继续）或 'n'（退出）")
        
        if retry == "n":
            print("\n👋 感谢使用智慧会员等级评定系统，祝你生活愉快！")
            print("=" * 60)
            break
        print("\n" + "=" * 60 + "\n")

# 执行程序
if __name__ == "__main__":
    main()